package main

import (
	"fmt"
	"sync"
)

// 解决开启goroutine，但是主线程结束协程需要完成的需求
// 第一步： 定义一个计数器
var wg sync.WaitGroup

func assist1() {
	for i := 0; i < 10; i++ {
		fmt.Printf("test assists1 %v \n", i)
	}
	wg.Done() //第三步 协程计数器，执行完毕 -1
}

func assist2() {
	for i := 0; i < 10; i++ {
		fmt.Printf("test assists2 %v \n", i)
	}
	wg.Done()
}

// routine--批量处理
// 主线程执行完毕，协程也停止（执行时间一致）；
func main() {
	//开启100协程
	//wg.Add(100) + for循环

	wg.Add(1)    //第二步：开启一个协程，协程计数器+1
	go assist1() //表示开启一个协程
	wg.Add(1)
	go assist2()
	wg.Wait()

	fmt.Printf("main func done")

}
